﻿#ifndef ALGORITHMODULE_H
#define ALGORITHMODULE_H

#include "opencv2/opencv.hpp"
#include <qdebug.h>
#include <vector>
using namespace cv;
using namespace std;
class AlgorithModule
{
public:
    AlgorithModule();
    Point2f findCircle(Mat);//获取激光点中心
    std::vector<cv::Point> getGrayCenterPoints_gravity(cv::Mat img);//获取激光线的中心,重心法
    std::vector<cv::Point> getGrayCenterPoints_threshold(cv::Mat img1);//阈值法
    std::vector<cv::Point> getGrayCenterPoints_peak(cv::Mat img1);//极值法
    void fitLine(std::vector<cv::Point> points, Vec4f &line);//拟合直线
    void get_k_b(Vec4f line,double &k,double &b);//用拟合的直线，计算y=kx+b中的k和b
    void showLineFitting(cv::Mat& img,  Vec4f line);
    double get_dis(Vec4f line,Point point);//计算点到直线的距离
    vector<double> movingAverage(const vector<double>& input, int windowSize);//滤波
    int getLineWidth(Mat mat,Vec4f line,int pos,Point &start,Point &end);//获取某个位置的线宽
    cv::Point getCross(Vec4f line,int x);//获取交点
};

#endif // ALGORITHMODULE_H
